package com.example.log.util;

import org.apache.commons.lang3.StringUtils;

public class DesensitizerUtils {

    /**
     * [密码] 全部为*
     */
    public static String dePassword() {
        return "******";
    }

    /**
     * [手机号码] 前三位，后四位，其他隐藏<例子:138******1234>
     * 由于使用的是字符填充，手机号码超过7位数的才会有填充的**效果
     * 如果不超过7为号码，等于是不用处理
     */
    public static String deMobilePhone(String num) {
        if (StringUtils.isBlank(num) || num.length() < 8) {
            return num;
        }
        String leftPad = StringUtils.leftPad(StringUtils.right(num, 4), StringUtils.length(num), "*");
        return StringUtils.left(num, 3).concat(StringUtils.removeStart(leftPad, "***"));
    }

    /**
     * [邮箱] 只展示邮箱前四位，如果不够则全部展示，邮箱后缀保留
     * <例子：dangwen@easemob.com 脱敏后为：dang****@easemob.com>
     * <例子：dang@easemob.com 脱敏后为：dang****@easemob.com>
     * <例子：da@easemob.com 脱敏后为：da****@easemob.com>
     */
    public static String deEmail(String email) {
        if (StringUtils.isBlank(email)) {
            return "";
        }
        int index = email.indexOf("@");
        if(index == -1){
            return email;
        }
        return StringUtils.left(email, index < 4 ? index : 4).concat("****").concat(email.substring(index));
    }
}